package com.imooc.miaosha.util;

import com.imooc.miaosha.common.Const;

public class JsonData<T> {
    private Integer code;
    private String msg;
    private T data;
    private Integer totalCount;

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public JsonData(Integer code) {
        this.code = code;
    }

    public static JsonData success() {
        return new JsonData(Const.STATUS_CODE.SUCCESS_CODE);
    }

    public static JsonData success(String msg) {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.SUCCESS_CODE);
        jsonData.setMsg(msg);
        return jsonData;
    }

    public static <T> JsonData success(T data) {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.SUCCESS_CODE);
        jsonData.setData(data);
        return jsonData;
    }

    public static <T> JsonData pageableSuccess(int totalCount, T data) {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.SUCCESS_CODE);
        jsonData.setTotalCount(totalCount);
        jsonData.setData(data);
        return jsonData;
    }

    public static <T> JsonData success(String msg, T data) {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.SUCCESS_CODE);
        jsonData.setData(data);
        jsonData.setMsg(msg);
        return jsonData;
    }

    public static <T> JsonData fail() {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.FAIL_CODE);
        return jsonData;
    }

    public static <T> JsonData fail(String msg) {
        JsonData jsonData = new JsonData(Const.STATUS_CODE.FAIL_CODE);
        jsonData.setMsg(msg);
        return jsonData;
    }
}
